(0) Obligation:
Runtime Complexity TRS:
The TRS R consists of the following rules:
c(c(b(c(x)))) → b(a(0, c(x)))
c(c(x)) → b(c(b(c(x))))
a(0, x) → c(c(x))
Rewrite Strategy: INNERMOST
(1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)
Converted CpxTRS to CDT
(2) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(z0)) → c2(C(b(c(z0))), C(z0))
A(0, z0) → c3(C(c(z0)), C(z0))
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(z0)) → c2(C(b(c(z0))), C(z0))
A(0, z0) → c3(C(c(z0)), C(z0))
K tuples:none
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A
Compound Symbols:
c1, c2, c3
(3) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
C(
c(
z0)) →
c2(
C(
b(
c(
z0))),
C(
z0)) by
C(c(x0)) → c2(C(x0))
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
A(0, z0) → c3(C(c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
A(0, z0) → c3(C(c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
K tuples:none
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A
Compound Symbols:
c1, c3, c2
(5) CdtInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use instantiation to replace
A(
0,
z0) →
c3(
C(
c(
z0)),
C(
z0)) by
A(0, c(x0)) → c3(C(c(c(x0))), C(c(x0)))
A1(0, z0) → c3(C(c(z0)), C(z0))
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A(0, c(x0)) → c3(C(c(c(x0))), C(c(x0)))
A1(0, z0) → c3(C(c(z0)), C(z0))
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A(0, c(x0)) → c3(C(c(c(x0))), C(c(x0)))
A1(0, z0) → c3(C(c(z0)), C(z0))
K tuples:none
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A, A1
Compound Symbols:
c1, c2, c3
(7) CdtKnowledgeProof (EQUIVALENT transformation)
The following tuples could be moved from S to K by knowledge propagation:
A1(0, z0) → c3(C(c(z0)), C(z0))
(8) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A(0, c(x0)) → c3(C(c(c(x0))), C(c(x0)))
A1(0, z0) → c3(C(c(z0)), C(z0))
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A(0, c(x0)) → c3(C(c(c(x0))), C(c(x0)))
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A, A1
Compound Symbols:
c1, c2, c3
(9) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
A(
0,
c(
x0)) →
c3(
C(
c(
c(
x0))),
C(
c(
x0))) by
A(0, c(b(c(z0)))) → c3(C(b(a(0, c(z0)))), C(c(b(c(z0)))))
A(0, c(z0)) → c3(C(b(c(b(c(z0))))), C(c(z0)))
A(0, c(x0)) → c3
(10) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A1(0, z0) → c3(C(c(z0)), C(z0))
A(0, c(b(c(z0)))) → c3(C(b(a(0, c(z0)))), C(c(b(c(z0)))))
A(0, c(z0)) → c3(C(b(c(b(c(z0))))), C(c(z0)))
A(0, c(x0)) → c3
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A(0, c(b(c(z0)))) → c3(C(b(a(0, c(z0)))), C(c(b(c(z0)))))
A(0, c(z0)) → c3(C(b(c(b(c(z0))))), C(c(z0)))
A(0, c(x0)) → c3
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A1, A
Compound Symbols:
c1, c2, c3, c3
(11) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 1 trailing nodes:
A(0, c(x0)) → c3
(12) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A1(0, z0) → c3(C(c(z0)), C(z0))
A(0, c(b(c(z0)))) → c3(C(b(a(0, c(z0)))), C(c(b(c(z0)))))
A(0, c(z0)) → c3(C(b(c(b(c(z0))))), C(c(z0)))
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A(0, c(b(c(z0)))) → c3(C(b(a(0, c(z0)))), C(c(b(c(z0)))))
A(0, c(z0)) → c3(C(b(c(b(c(z0))))), C(c(z0)))
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A1, A
Compound Symbols:
c1, c2, c3
(13) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
A(
0,
c(
b(
c(
z0)))) →
c3(
C(
b(
a(
0,
c(
z0)))),
C(
c(
b(
c(
z0))))) by
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
(14) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A1(0, z0) → c3(C(c(z0)), C(z0))
A(0, c(z0)) → c3(C(b(c(b(c(z0))))), C(c(z0)))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A(0, c(z0)) → c3(C(b(c(b(c(z0))))), C(c(z0)))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A1, A
Compound Symbols:
c1, c2, c3, c3
(15) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
A(
0,
c(
z0)) →
c3(
C(
b(
c(
b(
c(
z0))))),
C(
c(
z0))) by
A(0, c(x0)) → c3(C(c(x0)))
(16) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A1(0, z0) → c3(C(c(z0)), C(z0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
A(0, c(x0)) → c3(C(c(x0)))
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
C(c(x0)) → c2(C(x0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
A(0, c(x0)) → c3(C(c(x0)))
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A1, A
Compound Symbols:
c1, c2, c3, c3
(17) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
C(
c(
x0)) →
c2(
C(
x0)) by
C(c(c(b(c(y0))))) → c2(C(c(b(c(y0)))))
C(c(c(y0))) → c2(C(c(y0)))
(18) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
A1(0, z0) → c3(C(c(z0)), C(z0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
A(0, c(x0)) → c3(C(c(x0)))
C(c(c(b(c(y0))))) → c2(C(c(b(c(y0)))))
C(c(c(y0))) → c2(C(c(y0)))
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
A(0, c(x0)) → c3(C(c(x0)))
C(c(c(b(c(y0))))) → c2(C(c(b(c(y0)))))
C(c(c(y0))) → c2(C(c(y0)))
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A1, A
Compound Symbols:
c1, c3, c3, c2
(19) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 2 leading nodes:
C(c(c(b(c(y0))))) → c2(C(c(b(c(y0)))))
C(c(c(y0))) → c2(C(c(y0)))
(20) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
A1(0, z0) → c3(C(c(z0)), C(z0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
A(0, c(x0)) → c3(C(c(x0)))
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
A(0, c(x0)) → c3(C(c(x0)))
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A1, A
Compound Symbols:
c1, c3, c3
(21) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
A(
0,
c(
x0)) →
c3(
C(
c(
x0))) by
A(0, c(b(c(y0)))) → c3(C(c(b(c(y0)))))
(22) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
A1(0, z0) → c3(C(c(z0)), C(z0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
S tuples:
C(c(b(c(z0)))) → c1(A(0, c(z0)), C(z0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
C, A1, A
Compound Symbols:
c1, c3, c3
(23) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID) transformation)
Use forward instantiation to replace
C(
c(
b(
c(
z0)))) →
c1(
A(
0,
c(
z0)),
C(
z0)) by
C(c(b(c(c(b(c(y0))))))) → c1(A(0, c(c(b(c(y0))))), C(c(b(c(y0)))))
C(c(b(c(b(c(y0)))))) → c1(A(0, c(b(c(y0)))), C(b(c(y0))))
(24) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
C(c(b(c(c(b(c(y0))))))) → c1(A(0, c(c(b(c(y0))))), C(c(b(c(y0)))))
C(c(b(c(b(c(y0)))))) → c1(A(0, c(b(c(y0)))), C(b(c(y0))))
S tuples:
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
C(c(b(c(c(b(c(y0))))))) → c1(A(0, c(c(b(c(y0))))), C(c(b(c(y0)))))
C(c(b(c(b(c(y0)))))) → c1(A(0, c(b(c(y0)))), C(b(c(y0))))
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
A1, A, C
Compound Symbols:
c3, c3, c1
(25) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 1 leading nodes:
C(c(b(c(c(b(c(y0))))))) → c1(A(0, c(c(b(c(y0))))), C(c(b(c(y0)))))
(26) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
C(c(b(c(b(c(y0)))))) → c1(A(0, c(b(c(y0)))), C(b(c(y0))))
S tuples:
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
C(c(b(c(b(c(y0)))))) → c1(A(0, c(b(c(y0)))), C(b(c(y0))))
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
A1, A, C
Compound Symbols:
c3, c3, c1
(27) CdtNarrowingProof (BOTH BOUNDS(ID, ID) transformation)
Use narrowing to replace
C(
c(
b(
c(
b(
c(
y0)))))) →
c1(
A(
0,
c(
b(
c(
y0)))),
C(
b(
c(
y0)))) by
C(c(b(c(b(c(x0)))))) → c1(A(0, c(b(c(x0)))))
(28) Obligation:
Complexity Dependency Tuples Problem
Rules:
c(c(b(c(z0)))) → b(a(0, c(z0)))
c(c(z0)) → b(c(b(c(z0))))
a(0, z0) → c(c(z0))
Tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
C(c(b(c(b(c(x0)))))) → c1(A(0, c(b(c(x0)))))
S tuples:
A(0, c(b(c(x0)))) → c3(C(b(c(c(c(x0))))), C(c(b(c(x0)))))
A(0, c(b(c(x0)))) → c3(C(c(b(c(x0)))))
C(c(b(c(b(c(x0)))))) → c1(A(0, c(b(c(x0)))))
K tuples:
A1(0, z0) → c3(C(c(z0)), C(z0))
Defined Rule Symbols:
c, a
Defined Pair Symbols:
A1, A, C
Compound Symbols:
c3, c3, c1
(29) CpxTrsMatchBoundsTAProof (EQUIVALENT transformation)
A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 2.
The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by:
final states : [1, 2]
transitions:
b0(0) → 0
00() → 0
c0(0) → 1
a0(0, 0) → 2
c1(0) → 3
c1(3) → 2
c2(0) → 6
b2(6) → 5
c2(5) → 4
b2(4) → 2
(30) BOUNDS(O(1), O(n^1))